package com.vm.osm.business.service;

import com.vm.osm.business.dto.req.logic_node.AddLogicNodeReq;
import com.vm.osm.business.dto.req.logic_node.UpdateLogicNodeReq;
import com.vm.osm.business.dto.rsp.logic_node.LogicNodeDetail;
import com.vm.osm.business.dto.rsp.logic_node.LogicNodeTree;
import com.vm.osm.business.entity.OsmLogicNode;

import java.util.List;
import java.util.Map;

/**
 * 逻辑节点服务接口
 *
 * @author Xuerong Xue
 */
public interface IOsmLogicNodeService extends IBaseService<OsmLogicNode, String> {

    /**
     * 新增逻辑节点
     *
     * @param request 请求参数
     */
    void add(AddLogicNodeReq request);

    /**
     * 更新逻辑节点
     *
     * @param request 请求参数
     */
    void update(UpdateLogicNodeReq request);

    /**
     * 删除逻辑节点
     *
     * @param id 节点Id
     */
    void delete(String id);

    /**
     * 按条件查询全部
     *
     * @param params 查询条件
     * @return 符合条件的记录
     */
    List<OsmLogicNode> find(Map<String, Object> params);

    /**
     * 查询逻辑节点树
     *
     * @param root      树的根节点
     * @param id        节点Id
     * @param node_name 节点名称
     */
    void tree(LogicNodeTree root, String id, String node_name);

    /**
     * 获取逻辑节点
     *
     * @param id 节点Id
     */
    LogicNodeDetail detail(String id);
}
